import { Player } from "./player/player_class";

//
voxels.setVoxelId(128,1,128,0)
voxels.setVoxelId(128,2,128,0)
//

world.onPlayerJoin(({entity}) => {
	new Player(entity)
})

//world

// import { createNoise2D } from "simplex-noise"

// (async () => {
//     const n = 256
//     const r = 100**2

//     const noise = createNoise2D()
//     const list:number[][] = []

//     for(let x = 0;x < 256;x++)
//     {
//         list.push([])
//         for(let z = 0;z < 256;z++)
//         {
//             const ym = heights(x,z)
//             list[x].push(ym)
//             // for(let y = 0;y < ym;y++)
//             // {
//             //     voxels.setVoxel(x,y,z,'dirt')
//             // }
//             // voxels.setVoxel(x,ym,z,'grass')
//         }
//         //await sleep(100)
//     }
//     console.log(JSON.stringify(list))

//     function heights(x: number, z: number): number {
//         const noiseScale = 1/128;
//         const center = 128;
        
//         // 辐射渐变计算（平原半径扩大15%）
//         const dx = (x - center)/(center);
//         const dz = (z - center)/(center);
//         const distance = Math.sqrt(dx*dx + dz*dz) * 0.9; // 压缩距离增强连续性
        
//         // 三级噪声混合系统
//         const plainNoise = (noise(x * noiseScale * 2 , z * noiseScale * 2) + 1) * 0.5; // ±0.5米波动
        
//         // 山脉连片生成（三层噪声混合）
//         const mountainBase = Math.pow((noise(x * noiseScale*0.7, z * noiseScale*0.7) + 1)/2, 2); // 基础形状
//         const mountainDetail = (noise(x * noiseScale*3, z * noiseScale*3) + 1)/4; // 表面细节
//         const mountainRidge = Math.abs(noise(x * noiseScale*0.3, z * noiseScale*0.3)); // 山脉走向
        
//         // 最终山体高度（确保最小高度差）
//         const mountainHeight = (mountainBase * 0.6 + mountainDetail * 0.3 + mountainRidge * 0.1) * 120;
        
//         // 渐进过渡系统（三阶平滑）
//         const transition = smoothstep(0.6, 0.8, distance) * 
//                         smoothstep(0.7, 0.9, distance) * 
//                         (1 - Math.exp(-5*distance));
        
//         return Math.floor(
//             // 盆地基底（中心42米，边缘35米）
//             10 - 7 * Math.pow(distance, 0.25) +
//             // 平原细节（±0.5米）
//             plainNoise * (1 - transition) * 3 +
//             // 山脉系统（带边缘增强）
//             mountainHeight * Math.pow(transition, 1.5) * 1.2
//         );
//     }

//     function smoothstep(min: number, max: number, value: number): number {
//         const t = Math.max(0, Math.min(1, (value - min)/(max - min)));
//         return t*t*(3 - 2*t);
//     }
// })()